The desktop and server computer systems of today are extremely complex computing devices. These types of systems typically come equipped with high-performance central processing units (“CPUs” or “processors”) operating at clock speeds in excess of one gigahertz. These systems also come equipped with random access memory (“RAM”) typically of 256 megabytes or more and, in the case of server computers, potentially exceeding four gigabytes (“GB”). These computers also include many subsystems, such as mass storage devices, network devices, input/output devices, and others. In order to ensure that the CPU, RAM, and other subsystems of such a computer system are operating correctly, it is often necessary to execute a diagnostics application program on the computer to test the various subsystems.
Diagnostics application programs exist today that can test each of the various subsystems of a computer system and report any errors encountered. As an example, many diagnostics application programs include modules for testing the memory subsystems, including the RAM, of computer systems. Memory testing modules such as these typically write a bit pattern to each location in the RAM and then read the pattern back. If the pattern read is the same as the pattern written, the RAM is operating correctly. If the pattern read is different than the pattern written, however, a problem may exist with the RAM. Other types of pattern tests may also be performed.
Although memory testing modules utilized by current diagnostics applications program are capable of adequately performing RAM memory tests, these modules are not without their drawbacks. One such drawback is caused by differences in the memory addressing architecture of the current breed of CPUs utilized in most desktop and server computers. In particular, one class of CPU utilizes 36-bits to address main memory. By using 36-bits, this class of processor is capable of addressing up to 64 GB of memory. Processors of this type include the PENTIUM class of processors made by the INTEL CORPORATION and the ATHLON class of processors made by ADVANCED MICRO DEVICES.
Another class of CPU devices utilize 32-bits to address main memory. By using 32-bits, this class of processor is capable of addressing up to four GB of memory. Processors of this type include the C3 and CYRIX processors from VIA TECHNOLOGIES, INC. Because processors using 32-bit and 36-bit addressing are generally instruction compatible, these CPU devices are used variously in many of today's desktop and server computers. However, although CPUs using 32-bit and 36-bit memory addressing are typically instruction compatible, the differences in the memory addressing architectures of these processors generally prevents a single memory testing module from testing the memory of a computer system having a CPU with 32-bit addressing and a computer system having a processor with 36-bit addressing.
In order to test memory addressed by both types of CPUs, current diagnostics application programs utilize two different memory testing modules. One memory testing module is configured to test the memory of a computer system having a CPU with 32-bit addressing and another memory testing module is configured to test the memory of a computer system having a CPU with 36-bit addressing. However, maintaining separate memory testing modules for 32-bit and 36-bit processors takes more storage space than a single module, requires additional programmer time to maintain two modules, and increases the chances that a programming error may be introduced that would prevent a memory failure from being detected.
Therefore, in light of the above, there is a need for a unified method for testing computer memory that can test memory in computer systems utilizing CPUs having 32-bit memory addressing and memory in computer systems utilizing CPUs having 36-bit memory addressing.